package com.xusheng.cli.service;

import com.xusheng.cli.common.base.MyService;
import com.xusheng.cli.entity.roleModule.AssignmentPermissionDTO;
import com.xusheng.cli.entity.roleModule.Role;

import java.util.List;

/**
 * 角色表(Role)表服务接口
 *
 * @author jy
 * @since 2022-01-17 15:02:43
 */
public interface RoleService extends MyService<Role> {

	/**
	 * 获取当前登录用户的角色code
	 *
	 * @param
	 * @return java.util.List<java.lang.String>
	 * @author jy
	 */
	List<String> getRolesByUserId();

	/**
	 * 给角色分配权限
	 *
	 * @param assignmentPermissionDTO
	 * @return
	 * @author jy
	 * @since 2022/1/17 15:04
	 */
	boolean assignmentPermissionForRole(AssignmentPermissionDTO assignmentPermissionDTO);

	/**
	 * 获取当前角色已选的权限
	 *
	 * @param id 角色id
	 * @return
	 * @author jy
	 * @since 2022/1/17 15:16
	 */
	List<Long> listCheckedPermissionForRole(Long id);

	/**
	 * 获取用户关联的角色
	 *
	 * @param id 账户id
	 * @return
	 * @author jy
	 * @since 2022/1/17 15:18
	 */
	List<Long> getRoleByUserId(Long id);

	/**
	 * 新增数据
	 *
	 * @param role
	 * @return
	 * @author jy
	 * @since 2022/1/17 15:22
	 */
	boolean insert(Role role);

	/**
	 * 修改数据
	 *
	 * @param role
	 * @return
	 * @author jy
	 * @since 2022/1/17 15:25
	 */
	boolean update(Role role);

	/**
	 * 批量设置内置角色
	 *
	 * @param idList 角色id集合
	 * @return
	 * @author jy
	 * @since 2022/1/17 15:29
	 */
	boolean setInitRole(List<Long> idList);

	/**
	 * 批量设置默认角色
	 *
	 * @param idList 角色id集合
	 * @return
	 * @author jy
	 * @since 2022/1/17 15:32
	 */
	boolean setDefaultRole(List<Long> idList);

	/**
	 * 获取全部默认角色id
	 *
	 * @return
	 * @author jy
	 * @since 2022/1/17 15:40
	 */
	List<Object> listDefaultRole();

	/**
	 * 通过角色code查询角色的所有权限
	 *
	 * @param code 角色code
	 * @return 权限code
	 * @author jy
	 * @since 2021/11/17 17:12
	 */
	List<String> permissionCodeByRoleCode(String code);

}

